import java.util.HashMap;
import java.util.Map;

/**
 * 给你一个整数数组nums 和一个整数k ，判断数组中是否存在两个 不同的索引i和j ，满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在，返回 true ；否则，返回 false 。
 *https://leetcode.cn/problems/contains-duplicate-ii/
 *
 *思路：哈希表
 */
class ContainsNearbyDuplicateTwoMap {
    public boolean containsNearbyDuplicate(int[] nums, int k) {
        Map<Integer,Integer> map=new HashMap<>();
        int count=0;
        for(int num:nums){
            if(!map.containsKey(num)){
                map.put(num,count);
            }else{
                int val=Math.abs(map.get(num)-count);
                if(val<=k){
                    return true;
                }else{
                    map.put(num,count);
                }
            }
            count++;
        }
        return false;
    }
}